A solid state drive (SSD) may include a flash memory, flash memory controller, and an auxiliary local memory to store boot code and configuration data for the flash memory controller. This auxiliary memory may be implemented as a serial peripheral interface (SPI) flash memory of the SSD. However, storing boot code and configuration data in an auxiliary local memory means that there is a potential window of vulnerability if a power failure or other failure event occurs in the middle of an update.
Unfortunately, many conventional approaches used to safeguard updates in rewritable disk storage cannot be applied to a flash memory controller environment having an SPI flash as the auxiliary memory. This is due to the flash controller's limited computational resources. Additionally, the auxiliary memory imposes various physical limitations. For example, if the auxiliary memory is an SPI flash device, the coarse-grained erase-write characteristics of the SPI flash device limits the options to safeguard an update from a power failure or other failure event. Consequently, many of the techniques used to provide safeguards during an update process are unsuitable for coarse-grained erase-write flash storage or are otherwise incompatible with the resource constrained environment of an SSD.
There is, therefore, an unmet demand for SSDs with safeguards for updating files in an auxiliary memory in the event of a power failure or other failure event.